package com.project.class4_11.decorator;

/**
 * 装饰器模式
 */
public class Test {
    public static void main(String[] args) {
        IProduct p=new IrishCoffee();
        p=new Milk(p);
        System.out.println(p.getInfo());
    }
}
interface IProduct{
    /**
     * 得到商品描述
     * @return 描述信息
     */
    String getInfo();
    /**
     * 得到商品的价格
     * @return 商品价格
     */
    int getPrice();
}
class IrishCoffee implements IProduct{

    @Override
    public String getInfo() {
        return "爱尔兰咖啡";
    }

    @Override
    public int getPrice() {
        return 15;
    }
}
class BlueCoffee implements IProduct{

    @Override
    public String getInfo() {
        return "蓝山咖啡";
    }
    @Override
    public int getPrice() {
        return 12;
    }
}

/**
 * 配料接口
 */
interface Ingredients extends IProduct{ }
class Milk implements Ingredients{
    private IProduct p;
    public Milk(IProduct p){
        this.p=p;
    }
    @Override
    public String getInfo() {
        return p.getInfo()+"   加牛奶";
    }

    @Override
    public int getPrice() {
        return p.getPrice()+2;
    }
}